//实现 Runnable，重写 run
/* 和Demo1本质是一样的，Runnable这样的写法 更加解耦合
 Demo1 ”线程“和”任务“是绑定在一起的，如果修改成其他形式，就需要比较大规模修改class MyThread里的方法
 Demo2 并没有和线程概念绑定，这样的任务非常方便地转移到其他的载体上了 */
public class Demo2 {
    static class MyRunnable implements Runnable{ // Runnable可运行的
        //下面这段代码逻辑 给谁执行，Runnable自身并不关心
        @Override
        public void run() {
            while(true){
                System.out.println("Hello Thread");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
    public static void main(String[] args) throws InterruptedException {
        // 创建 Thread 类实例，调用 Thread 的构造方法时将 Runnable 对象作为 target 参数
        MyRunnable r = new MyRunnable();
        Thread t = new Thread(r); //Runnable自身一般不会单独执行，需要搭配别的“载体”

        t.start(); // 启动的新线程执行Runnable内部的内容

        while(true){
            System.out.println("hello main");
            Thread.sleep(1000);
        }

    }
}
